const promise = new Promise((resolve, reject) => {
  // 兑现承诺
  resolve(100);
  // reject(new Error('promise rejected'));
});

// promise.then(
//   value => {
//     console.log('resolve', value);
//   },
//   err => {
//     console.log('reject', err);
//   },
// );

promise
  .then(value => {
    console.log('then1', value);
    foo();
    return 200;
  })
  .catch(err => {
    console.log('catch1', err);
  })
  .then(value => console.log(value, 'then2')) // 这里可以执行是因为catch方法返回一个promise
  .then(value => {
    console.log(value, 'then6');
  });

promise
  .then(value => {
    console.log('then3', value);
    foo();
    return 200;
  })
  .then(value => console.log(value, 'then4')) // 这里不会执行是因为上一个then报错 直接在新的promise中返回reject状态，所以直接走了catch
  .catch(err => {
    console.log('catch2', err);
  });

Promise.resolve().then(value => {
  console.log(value, '4');
});
